package org.hardstone.domain.media.resource;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Table;

import org.hardstone.domain.BaseItemDomain;
import org.hardstone.domain.BaseCategory;
import org.hardstone.domain.Status;

@Entity
@Table(name = "Picture")
public class Picture extends BaseItemDomain<Long> {

    @Column(name = "title")
    private String title;                   // 图片标题

    @Column(name = "artist")
    private String artist;                  // 艺术家/摄影师

    @Column(name = "genre")
    private String genre;                   // 图片风格/类型

    @Column(name = "yearTaken")
    private Integer yearTaken;              // 拍摄年份

    @Column(name = "resolution")
    private String resolution;              // 分辨率（例如 1920x1080）

    @Column(name = "fileFormat")
    private String fileFormat;              // 文件格式（JPEG, PNG, BMP等）

    @Column(name = "size")
    private Long size;                      // 文件大小（字节）

    @Column(name = "rating")
    private Float rating;                   // 用户评分

    @Column(name = "description", columnDefinition = "TEXT")
    private String description;             // 图片描述//

    public Picture() {
    }

    public Picture(Long id, Long itemGroupId, String name, BaseCategory category, Long userId, Long userGroupId, int authority, String url, String pictureDescription, Status status, String askDate, String modifyDate, String tags, String attribute, String title, String artist, String genre, Integer yearTaken, String resolution, String fileFormat, Long size, Float rating) {
        super(id, itemGroupId, name, category, userId, userGroupId, authority, url, pictureDescription, status, askDate, modifyDate, tags, attribute);
        this.title = title;
        this.artist = artist;
        this.genre = genre;
        this.yearTaken = yearTaken;
        this.resolution = resolution;
        this.fileFormat = fileFormat;
        this.size = size;
        this.rating = rating;
        this.description = pictureDescription;
    }

    // Getters and Setters for all fields
    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getArtist() {
        return artist;
    }

    public void setArtist(String artist) {
        this.artist = artist;
    }

    public String getGenre() {
        return genre;
    }

    public void setGenre(String genre) {
        this.genre = genre;
    }

    public Integer getYearTaken() {
        return yearTaken;
    }

    public void setYearTaken(Integer yearTaken) {
        this.yearTaken = yearTaken;
    }

    public String getResolution() {
        return resolution;
    }

    public void setResolution(String resolution) {
        this.resolution = resolution;
    }

    public String getFileFormat() {
        return fileFormat;
    }

    public void setFileFormat(String fileFormat) {
        this.fileFormat = fileFormat;
    }

    public Long getSize() {
        return size;
    }

    public void setSize(Long size) {
        this.size = size;
    }

    public Float getRating() {
        return rating;
    }

    public void setRating(Float rating) {
        this.rating = rating;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }
}
